 /*
 * Parameter.h
 *
 *  Created on: 18 Nov 2011
 *      Author: allan
 */

#ifndef PARAMETER_H_
#define PARAMETER_H_

// C++ includes
#include <map>
#include <string>
using namespace std;

// Boost includes
#include <boost/any.hpp>

class Parameter
{
public:
	Parameter();
	
	Parameter(int p);
	
	Parameter(unsigned p);
	
	Parameter(double p);

	Parameter(bool p);
	
	Parameter(const char* p);
	
	Parameter(string p);
	
	bool empty() const;
	
	operator int() const;
	
	operator unsigned() const;
	
	operator double() const;
	
	operator bool() const;
	
	operator const char*() const;
	
	operator string() const;
	
private:
	boost::any param;
};

typedef map<string, Parameter> Parameters;

#endif /* PARAMETER_H_ */
